<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
  </head>
  <body>
    <!-- MVVM中的View -->
    <div id="app">
      <p>{{ count }}</p>
      <!-- 在vue中，当我们使用事件的时候，如果我们的事件处理逻辑非常简单，那么我们可以直接写在事件上面
      无需再单独写methods，如果逻辑过多，建议写在methods中 -->
      <button @click="count++">+1</button>
      <!-- <button @click="add">+1</button> -->
      <!-- 计算属性在使用的时候，我们不要加() -->
      <p>count 的平方数：{{ square }}</p>
      <p>count 的平方数：{{ square }}</p>
      <p>count 的平方数：{{ square }}</p>

      <!-- <p>count 的平方数：{{ squareCount }}</p> -->

      <!-- 测试方法的调用 -->
      {{ calcSquare() }}
      {{ calcSquare() }}
      {{ calcSquare() }}
      <p></p>
    </div>

    <script>
      new Vue({
        el: '#app', // el，vue解析的范围
        data: {
          count: 1,
          squareCount: 1
        },
        computed: {
          // 计算属性函数，必须要有返回值
          // 第一次进来会执行，并且依赖的值，发生了改变，他也会再次执行
          square() {
            console.log('---square---')
            return this.count * this.count
          }
        },
        // methods: {
        //   add() {
        //     this.count++
        //     this.squareCount = this.count * this.count
        //   }
        // }
        methods: {
          calcSquare() {
            console.log('---calcSquare---')
          }
        }
      })
    </script>
  </body>
</html>
